// 
// Copyright 2010 Classpath Pty Ltd <opensource@classpath.com.au>
// 
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// 
//     http://www.apache.org/licenses/LICENSE-2.0
// 
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// 

using build

**
** Tests the `CanAlterTable` mixin.
**
internal class CanAlterTableTest : Test {

    **
    ** Stores an instance of `CanAlterTable` for testing.
    **
    CanAlterTable? canAlterTable

    **
    ** Performs additional setup needed for `CanAlterTableTest`.
    **
    override Void setup() {
        super.setup()
        canAlterTable = CanAlterTableTestClass()
    }

    **
    ** Cleans up additional setup needed for `CanAlterTableTest`.
    **
    override Void teardown() {
        super.teardown()
        canAlterTable = null
    }

    **
    ** Tests the `CanAlterTable.alterTable` method.
    **
    Void testAlterTable() {
        table := canAlterTable.alterTable("table_name")
        verifyEq("table_name", table.name)
        verifyEq(1, canAlterTable.modifications.size)
        verifyEq(table, canAlterTable.modifications[0])
    }

}

**
** Provides a simple implementation of `CanAlterTable` for testing.
**
internal class CanAlterTableTestClass : CanAlterTable {

    **
    ** Stores the list of [Modifications]`Modification` for testing.
    **
    override Modification[] modifications := [,]

}
